"""Definition of the Proyecto content type
"""

from AccessControl import ClassSecurityInfo

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata
from Products.Archetypes import utils

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import IProyecto
from guegue.alcaldias.config import PROJECTNAME

ProyectoSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Título',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Descripción',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción del proyecto.')),
    atapi.BooleanField('inversion',
                searchable=1,
                isMetadata=0,
		widget=atapi.BooleanWidget(label='Incluido o no en el Plan de Inversiones',
			label_msgid='label_entry_inversion',
			description_msgid='help_entry_inversion',
			i18n_domain='guegue.alcaldias',
			description='')),
    atapi.ImageField('image',
              searchable=0,
              required=0,
              sizes= {'large'   : (768, 768),
                'preview' : (400, 400),
                'mini'    : (200, 200),
                'thumb'   : (128, 128),
                'tile'    :  (64, 64),
                'icon'    :  (32, 32),
                'listing' :  (16, 16),
               },
              widget=atapi.ImageWidget(label='Imagen',
                                label_msgid="label_entry_image",
                                description_msgid="help_entry_image",
                                i18n_domain="guegue.alcaldias",
                                threshold=102400,
                                description='Imagen relacionada a proyecto')),
    atapi.StringField('sector',
                searchable=1,
                isMetadata=0,
		vocabulary=['Ambiental','Agropecuario','Minero','Infraestructura','Social','Justicia','Energía','Medio ambiente','Educación','Salud','Ciencia y tecnología'],
		widget=atapi.SelectionWidget(label='Sector',
			label_msgid='label_entry_sector',
			description_msgid='help_entry_sector',
			i18n_domain='guegue.alcaldias',
			description='')),
    atapi.TextField('objetivos',
                searchable=1,
                isMetadata=0,
                default_content_type='text/html',
                default_output_type='text/html',
                allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
                widget=atapi.RichWidget(label='Objetivos',
                                      label_msgid="label_entry_objetivos",
                                      description_msgid="help_entry_objetivos",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entres los objetivos del proyecto.')),
    atapi.StringField('ano',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Año',
                                      maxlength=9,
                                      size=12,
                                      label_msgid="label_entry_ano",
                                      description_msgid="help_entry_ano",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.DateTimeField('fecha',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha Inicio',
                                      label_msgid="label_entry_fecha",
                                      show_hm = False,
                                      description_msgid="help_entry_fecha",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de inicio del proyecto')),
    atapi.DateTimeField('fechafin',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha Fin',
                                      label_msgid="label_entry_fechafin",
                                      show_hm = False,
                                      description_msgid="help_entry_fechafin",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de finalizacion del proyecto')),
   atapi.StringField('estado',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Estado',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_estado",
                                      description_msgid="help_entry_estado",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('dependencia',
                searchable=1,
                isMetadata=0,
                vocabulary="getDependencias",
                widget=atapi.SelectionWidget(label='Dependencia Responsable',
                                      label_msgid="label_entry_dependencia",
                                      description_msgid="help_entry_dependencia",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.TextField('comite',
                searchable=1,
                isMetadata=0,
                default_content_type='text/html',
                default_output_type='text/html',
                allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
                widget=atapi.RichWidget(label='Personas que conforman el Comité Técnico',
                                      label_msgid="label_entry_comite",
                                      description_msgid="help_entry_comite",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('monto',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Presupuesto',
                                      maxlength=300,
                                      size=60,
                                      label_msgid="label_entry_monto",
                                      description_msgid="help_entry_monto",
                                      i18n_domain="guegue.alcaldias",
                                      description='Indicar en este cuadro Monto al cual asciende el Presupuesto del Proyecto. Ej. 1,000,000.00')),
    atapi.StringField('moneda',
                searchable=1,
                isMetadata=0,
                vocabulary=['Córdobas','Dólares','Euros'],
                widget=atapi.SelectionWidget(label='Moneda: ',
                        label_msgid='label_entry_moneda',
                        description_msgid='help_entry_moneda',
                        i18n_domain='guegue.municipios',
                        description='')),
    atapi.StringField('fuentes',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Fuentes de Financiamiento',
                                      maxlength=300,
                                      size=60,
                                      label_msgid="label_entry_fuentes",
                                      description_msgid="help_entry_fuentes",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.TextField('contacto',
                searchable=1,
                isMetadata=0,
                default_content_type='text/html',
                default_output_type='text/html',
                allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
                widget=atapi.RichWidget(label='Datos de Contacto',
                                      label_msgid="label_entry_contacto",
                                      description_msgid="help_entry_contacto",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Más detalles del Proyecto',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="Puede entrar el texto del proyecto completo.")),
    atapi.FileField('adjunto',
              searchable=0,
              required=0,
              widget=atapi.FileWidget(label='Archivo adjunto',
                                label_msgid="label_entry_adjunto",
                                description_msgid="help_entry_adjunto",
                                i18n_domain="guegue.alcaldias",
                                description='Puede adjuntar un archivo con el proyecto completo.')),
))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

schemata.finalizeATCTSchema(ProyectoSchema, moveDiscussion=False)

class Proyecto(base.ATCTContent):
    """Tipo de datos para proyectos"""
    implements(IProyecto)

    def tag(self, **kwargs):
        if 'title' not in kwargs:
            kwargs['title'] = ''
        return self.getField('image').tag(self, **kwargs)

    def getDependencias(self):
        dl = utils.DisplayList()
        linklist = self.portal_catalog.searchResults(portal_type='Dependencia')
        for link in linklist:
            dl.add(link['id'], link['Title'])
        return dl

    portal_type = "Proyecto"
    schema = ProyectoSchema

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Proyecto, PROJECTNAME)
